μλ°μ€ν¬λ¦½νΈ λ°μ½λ μ΄ν° Stage 3 ꡬνμ λ©νλ°μ΄ν° νλ‘κ·Έλλ° μ€μ¬μΌλ‘ νμν©λλ€. μ€μ©μ μΈ μμ λ₯Ό λ°°μ°κ³ , μ΄μ μ μ΄ν΄νλ©°, μ½λμ κ°λ μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν€λ λ°©λ²μ μμ보μΈμ.
μλ°μ€ν¬λ¦½νΈ λ°μ½λ μ΄ν° Stage 3: λ©νλ°μ΄ν° νλ‘κ·Έλλ° κ΅¬ν
νμ¬ ECMAScript μ μ κ³Όμ μμ Stage 3μ μλ μλ°μ€ν¬λ¦½νΈ λ°μ½λ μ΄ν°λ λ©ννλ‘κ·Έλλ°μ μν κ°λ ₯ν λ©μ»€λμ¦μ μ 곡ν©λλ€. λ°μ½λ μ΄ν°λ₯Ό μ¬μ©νλ©΄ ν΄λμ€, λ©μλ, μμ± λ° λ§€κ°λ³μμ λμμ μ£Όμμ μΆκ°νκ³ μμ ν μ μμ΅λλ€. μ΄ λΈλ‘κ·Έ κ²μλ¬Όμμλ μ½λ ꡬμ±, μ μ§λ³΄μμ± λ° κ°λ μ±μ ν₯μμν€κΈ° μν΄ λ©νλ°μ΄ν° νλ‘κ·Έλλ°μ νμ©νλ λ°©λ²μ μ΄μ μ λ§μΆ° λ°μ½λ μ΄ν°μ μ€μ ꡬνμ μ¬μΈ΅μ μΌλ‘ λ€λ£Ήλλ€. λ€μν μμ λ₯Ό νμνκ³ μ μΈκ³ μλ°μ€ν¬λ¦½νΈ κ°λ°μμκ² μ μ©ν μ μλ μ€ν κ°λ₯ν ν΅μ°°λ ₯μ μ 곡ν κ²μ λλ€.
λ°μ½λ μ΄ν°λ 무μμΈκ°? κ°λ¨ν μμ½
ν΅μ¬μ μΌλ‘ λ°μ½λ μ΄ν°λ ν΄λμ€, λ©μλ, μμ± λ° λ§€κ°λ³μμ 첨λΆν μ μλ ν¨μμ λλ€. λ°μ½λ μ΄ν°λ μ₯μλ μμμ λν μ 보λ₯Ό μμ νκ³ μ΄λ₯Ό μμ νκ±°λ μλ‘μ΄ λμμ μΆκ°ν μ μλ λ₯λ ₯μ κ°μ§λλ€. μ΄κ²μ μ μΈμ λ©ννλ‘κ·Έλλ°μ ν ννλ‘, μλλ₯Ό λ λͺ ννκ² νννκ³ μμ©κ΅¬ μ½λλ₯Ό μ€μΌ μ μκ² ν΄μ€λλ€. ꡬ문μ μμ§ λ°μ μ€μ΄μ§λ§ ν΅μ¬ κ°λ μ λμΌνκ² μ μ§λ©λλ€. λͺ©νλ κΈ°μ‘΄ μλ°μ€ν¬λ¦½νΈ ꡬ쑰μ μλ³Έ μμ€ μ½λλ₯Ό μ§μ λ³κ²½νμ§ μκ³ λ μ΄λ₯Ό νμ₯νκ³ μμ νλ κ°κ²°νκ³ μ°μν λ°©λ²μ μ 곡νλ κ²μ λλ€.
μ μλ ꡬ문μ μΌλ°μ μΌλ‘ '@' κΈ°νΈλ‘ μμν©λλ€:
class MyClass {
@decorator
myMethod() {
// ...
}
}
μ΄ `@decorator` ꡬ문μ `myMethod`κ° `decorator` ν¨μμ μν΄ μ₯μλκ³ μμμ μλ―Έν©λλ€.
λ©νλ°μ΄ν° νλ‘κ·Έλλ°: λ°μ½λ μ΄ν°μ ν΅μ¬
λ©νλ°μ΄ν°λ λ°μ΄ν°μ λν λ°μ΄ν°λ₯Ό μλ―Έν©λλ€. λ°μ½λ μ΄ν°μ λ§₯λ½μμ λ©νλ°μ΄ν° νλ‘κ·Έλλ°μ ν΄λμ€, λ©μλ, μμ± λ° λ§€κ°λ³μμ μΆκ° μ 보(λ©νλ°μ΄ν°)λ₯Ό 첨λΆν μ μκ² ν΄μ€λλ€. μ΄ λ©νλ°μ΄ν°λ μ ν리μΌμ΄μ μ λ€λ₯Έ λΆλΆμμ λ€μκ³Ό κ°μ λ€μν λͺ©μ μΌλ‘ μ¬μ©λ μ μμ΅λλ€:
- μ ν¨μ± κ²μ¬
- μ§λ ¬ν/μμ§λ ¬ν
- μμ‘΄μ± μ£Όμ
- κΆν λΆμ¬
- λ‘κΉ
- νμ κ²μ¬ (νΉν TypeScriptμ ν¨κ» μ¬μ©ν λ)
λ©νλ°μ΄ν°λ₯Ό 첨λΆνκ³ κ²μνλ λ₯λ ₯μ μ μ°νκ³ νμ₯ κ°λ₯ν μμ€ν μ λ§λλ λ° μ€μν©λλ€. μ΄λ¬ν μ μ°μ±μ μλ³Έ μ½λλ₯Ό μμ ν νμμ±μ νΌνκ³ λ κΉ¨λν κ΄μ¬μ¬ λΆλ¦¬λ₯Ό μ΄μ§ν©λλ€. μ΄ μ κ·Ό λ°©μμ μ§λ¦¬μ μμΉμ κ΄κ³μμ΄ λͺ¨λ κ·λͺ¨μ νμ μ μ΅ν©λλ€.
ꡬν λ¨κ³ λ° μ€μ μμ
λ°μ½λ μ΄ν°λ₯Ό μ¬μ©νλ €λ©΄ μΌλ°μ μΌλ‘ Babelμ΄λ TypeScriptμ κ°μ νΈλμ€νμΌλ¬κ° νμν©λλ€. μ΄λ¬ν λꡬλ λ°μ½λ μ΄ν° ꡬ문μ λΈλΌμ°μ λ Node.js νκ²½μ΄ μ΄ν΄ν μ μλ νμ€ μλ°μ€ν¬λ¦½νΈ μ½λλ‘ λ³νν©λλ€. μλ μμ λ μ€μ μλ리μ€λ₯Ό μν΄ λ°μ½λ μ΄ν°λ₯Ό ꡬννκ³ νμ©νλ λ°©λ²μ 보μ¬μ€λλ€.
μμ 1: μμ± μ ν¨μ± κ²μ¬
μμ±μ νμ μ κ²μ¦νλ λ°μ½λ μ΄ν°λ₯Ό λ§λ€μ΄ λ³΄κ² μ΅λλ€. μ΄λ μΈλΆ μμ€μ λ°μ΄ν°λ₯Ό λ€λ£¨κ±°λ APIλ₯Ό ꡬμΆν λ νΉν μ μ©ν μ μμ΅λλ€. λ€μκ³Ό κ°μ μ κ·Ό λ°©μμ μ μ©ν μ μμ΅λλ€:
- λ°μ½λ μ΄ν° ν¨μλ₯Ό μ μν©λλ€.
- λ°μ(reflection) κΈ°λ₯μ μ¬μ©νμ¬ λ©νλ°μ΄ν°μ μ κ·Όνκ³ μ μ₯ν©λλ€.
- ν΄λμ€ μμ±μ λ°μ½λ μ΄ν°λ₯Ό μ μ©ν©λλ€.
- ν΄λμ€ μΈμ€ν΄μ€ν μ€μ΄λ λ°νμμ μμ± κ°μ κ²μ¦ν©λλ€.
function validateType(type) {
return function(target, propertyKey) {
let value;
const getter = function() {
return value;
};
const setter = function(newValue) {
if (typeof newValue !== type) {
throw new TypeError(`Property ${propertyKey} must be of type ${type}`);
}
value = newValue;
};
Object.defineProperty(target, propertyKey, {
get: getter,
set: setter,
enumerable: true,
configurable: true
});
};
}
class User {
@validateType('string')
name;
constructor(name) {
this.name = name;
}
}
try {
const user1 = new User('Alice');
console.log(user1.name); // Output: Alice
const user2 = new User(123); // Throws TypeError
} catch (error) {
console.error(error.message);
}
μ΄ μμ μμ `@validateType` λ°μ½λ μ΄ν°λ μμ νμ μ μΈμλ‘ λ°μ΅λλ€. μμ±μ getterμ setterλ₯Ό μμ νμ¬ νμ μ ν¨μ± κ²μ¬ λ‘μ§μ ν¬ν¨μν΅λλ€. μ΄ μμ λ μ μΈκ³ μμ€ν μμ νν λ°μνλ μΈλΆ μμ€λ‘λΆν°μ λ°μ΄ν°λ₯Ό κ²μ¦νλ μ μ©ν μ κ·Ό λ°©μμ μ 곡ν©λλ€.
μμ 2: λ‘κΉ μ μν λ©μλ λ°μ½λ μ΄ν°
λ‘κΉ μ μ ν리μΌμ΄μ λλ²κΉ λ° λͺ¨λν°λ§μ μ€μν©λλ€. λ°μ½λ μ΄ν°λ λ©μλμ ν΅μ¬ λ‘μ§μ μμ νμ§ μκ³ λ λ©μλμ λ‘κΉ μ μΆκ°νλ κ³Όμ μ λ¨μνν μ μμ΅λλ€. λ€μ μ κ·Ό λ°©μμ κ³ λ €ν΄λ³΄μΈμ:
- ν¨μ νΈμΆ λ‘κΉ μ μν λ°μ½λ μ΄ν°λ₯Ό μ μν©λλ€.
- μ€ν μ νμ λ‘κΉ μ μΆκ°νλλ‘ μλ³Έ λ©μλλ₯Ό μμ ν©λλ€.
- λ‘κΉ νλ €λ λ©μλμ λ°μ½λ μ΄ν°λ₯Ό μ μ©ν©λλ€.
function logMethod(target, key, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args) {
console.log(`[LOG] Calling method ${key} with arguments:`, args);
const result = originalMethod.apply(this, args);
console.log(`[LOG] Method ${key} returned:`, result);
return result;
};
return descriptor;
}
class MathOperations {
@logMethod
add(a, b) {
return a + b;
}
}
const math = new MathOperations();
const sum = math.add(5, 3);
console.log(sum); // Output: 8
μ΄ μμ λ λ©μλλ₯Ό λ‘κΉ κΈ°λ₯μΌλ‘ κ°μΈλ λ°©λ²μ 보μ¬μ€λλ€. μ΄λ λ©μλ νΈμΆκ³Ό λ°ν κ°μ μΆμ νλ κΉ¨λνκ³ λμ λμ§ μλ λ°©λ²μ λλ€. μ΄λ¬ν κ΄νμ λ€λ₯Έ νλ‘μ νΈλ₯Ό μ§ννλ λͺ¨λ κ΅μ νμ μ μ©ν μ μμ΅λλ€.
μμ 3: μμ± μΆκ°λ₯Ό μν ν΄λμ€ λ°μ½λ μ΄ν°
ν΄λμ€ λ°μ½λ μ΄ν°λ ν΄λμ€μ μμ±μ΄λ λ©μλλ₯Ό μΆκ°νλ λ° μ¬μ©λ μ μμ΅λλ€. λ€μμ μ€μ©μ μΈ μμ λ₯Ό μ 곡ν©λλ€:
- μλ‘μ΄ μμ±μ μΆκ°νλ ν΄λμ€ λ°μ½λ μ΄ν°λ₯Ό μ μν©λλ€.
- ν΄λμ€μ λ°μ½λ μ΄ν°λ₯Ό μ μ©ν©λλ€.
- ν΄λμ€λ₯Ό μΈμ€ν΄μ€ννκ³ μΆκ°λ μμ±μ κ΄μ°°ν©λλ€.
function addTimestamp(target) {
target.prototype.timestamp = new Date();
return target;
}
@addTimestamp
class MyClass {
constructor() {
// ...
}
}
const instance = new MyClass();
console.log(instance.timestamp); // Output: Date object
μ΄ ν΄λμ€ λ°μ½λ μ΄ν°λ μ₯μνλ λͺ¨λ ν΄λμ€μ `timestamp` μμ±μ μΆκ°ν©λλ€. μ΄λ μ¬μ¬μ© κ°λ₯ν λ°©μμΌλ‘ ν΄λμ€λ₯Ό νμ₯νλ λ°©λ²μ κ°λ¨νλ©΄μλ ν¨κ³Όμ μΌλ‘ 보μ¬μ€λλ€. μ΄λ λ€μν κΈλ‘λ² νμ΄ μ¬μ©νλ 곡μ λΌμ΄λΈλ¬λ¦¬λ μ νΈλ¦¬ν° κΈ°λ₯μ λ€λ£° λ νΉν μ μ©ν©λλ€.
κ³ κΈ κΈ°μ λ° κ³ λ € μ¬ν
λ°μ½λ μ΄ν° ν©ν 리 ꡬν
λ°μ½λ μ΄ν° ν©ν 리λ₯Ό μ¬μ©νλ©΄ λ μ μ°νκ³ μ¬μ¬μ© κ°λ₯ν λ°μ½λ μ΄ν°λ₯Ό λ§λ€ μ μμ΅λλ€. μ΄λ λ°μ½λ μ΄ν°λ₯Ό λ°ννλ ν¨μμ λλ€. μ΄ μ κ·Ό λ°©μμ μ¬μ©νλ©΄ λ°μ½λ μ΄ν°μ μΈμλ₯Ό μ λ¬ν μ μμ΅λλ€.
function makeLoggingDecorator(prefix) {
return function (target, key, descriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args) {
console.log(`[${prefix}] Calling method ${key} with arguments:`, args);
const result = originalMethod.apply(this, args);
console.log(`[${prefix}] Method ${key} returned:`, result);
return result;
};
return descriptor;
};
}
class MyClass {
@makeLoggingDecorator('INFO')
myMethod(message) {
console.log(message);
}
}
const instance = new MyClass();
instance.myMethod('Hello, world!');
`makeLoggingDecorator` ν¨μλ `prefix` μΈμλ₯Ό λ°λ λ°μ½λ μ΄ν° ν©ν 리μ λλ€. λ°νλ λ°μ½λ μ΄ν°λ λ‘κ·Έ λ©μμ§μμ μ΄ μ λμ¬λ₯Ό μ¬μ©ν©λλ€. μ΄ μ κ·Ό λ°©μμ λ‘κΉ λ° μ¬μ©μ μ μμ μμ΄ ν₯μλ λ€μ©μ±μ μ 곡ν©λλ€.
TypeScriptμμ λ°μ½λ μ΄ν° μ¬μ©νκΈ°
TypeScriptλ λ°μ½λ μ΄ν°μ λν νλ₯ν μ§μμ μ 곡νμ¬ νμ μμ μ±κ³Ό κΈ°μ‘΄ μ½λμμ λ λμ ν΅ν©μ κ°λ₯νκ² ν©λλ€. TypeScriptλ λ°μ½λ μ΄ν° ꡬ문μ μλ°μ€ν¬λ¦½νΈλ‘ μ»΄νμΌνμ¬ Babelκ³Ό μ μ¬ν κΈ°λ₯μ μ§μν©λλ€.
function logMethod(target: any, key: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
console.log(`[LOG] Calling method ${key} with arguments:`, args);
const result = originalMethod.apply(this, args);
console.log(`[LOG] Method ${key} returned:`, result);
return result;
};
return descriptor;
}
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
@logMethod
greet(): string {
return "Hello, " + this.greeting;
}
}
const greeter = new Greeter("world");
console.log(greeter.greet());
μ΄ TypeScript μμ μμ λ°μ½λ μ΄ν° ꡬ문μ λμΌν©λλ€. TypeScriptλ νμ κ²μ¬μ μ μ λΆμμ μ 곡νμ¬ κ°λ° μ£ΌκΈ° μ΄κΈ°μ μ μ¬μ μΈ μ€λ₯λ₯Ό ν¬μ°©νλ λ° λμμ μ€λλ€. TypeScriptμ μλ°μ€ν¬λ¦½νΈλ κ΅μ μννΈμ¨μ΄ κ°λ°, νΉν λκ·λͺ¨ νλ‘μ νΈμμ μμ£Ό ν¨κ» μ¬μ©λ©λλ€.
λ©νλ°μ΄ν° API κ³ λ € μ¬ν
νμ¬ Stage 3 μ μμ μμ§ νμ€ λ©νλ°μ΄ν° APIλ₯Ό μμ ν μ μνμ§ μμμ΅λλ€. κ°λ°μλ€μ μ’ μ’ λ©νλ°μ΄ν° μ μ₯ λ° κ²μμ μν΄ λ¦¬νλ μ λΌμ΄λΈλ¬λ¦¬λ νμ¬ μ루μ μ μμ‘΄ν©λλ€. λ©νλ°μ΄ν° APIκ° μ΅μ’ νμ λ¨μ λ°λΌ ECMAScript μ μμ λν μ΅μ μ 보λ₯Ό μ μ§νλ κ²μ΄ μ€μν©λλ€. μ΄λ¬ν λΌμ΄λΈλ¬λ¦¬λ μ’ μ’ μ₯μλ μμμ κ΄λ ¨λ λ©νλ°μ΄ν°λ₯Ό μ μ₯νκ³ κ²μν μ μλ APIλ₯Ό μ 곡ν©λλ€.
μ μ¬μ μ¬μ© μ¬λ‘ λ° μ₯μ
- μ ν¨μ± κ²μ¬: μμ±κ³Ό λ©μλ λ§€κ°λ³μλ₯Ό κ²μ¦νμ¬ λ°μ΄ν° 무결μ±μ 보μ₯ν©λλ€.
- μ§λ ¬ν/μμ§λ ¬ν: κ°μ²΄λ₯Ό JSONμ΄λ λ€λ₯Έ νμμΌλ‘ λ³ννκ±°λ κ·Έ λ°λλ‘ λ³ννλ κ³Όμ μ λ¨μνν©λλ€.
- μμ‘΄μ± μ£Όμ : ν΄λμ€ μμ±μλ λ©μλμ νμν μλΉμ€λ₯Ό μ£Όμ νμ¬ μμ‘΄μ±μ κ΄λ¦¬ν©λλ€. μ΄ μ κ·Ό λ°©μμ ν μ€νΈ μ©μ΄μ±κ³Ό μ μ§λ³΄μμ±μ ν₯μμν΅λλ€.
- κΆν λΆμ¬: μ¬μ©μ μν μ΄λ κΆνμ λ°λΌ λ©μλμ λν μ κ·Όμ μ μ΄ν©λλ€.
- μΊμ±: λΉμ©μ΄ λ§μ΄ λλ μμ μ κ²°κ³Όλ₯Ό μ μ₯νμ¬ μ±λ₯μ ν₯μμν€λ μΊμ± μ λ΅μ ꡬνν©λλ€.
- κ΄μ μ§ν₯ νλ‘κ·Έλλ°(AOP): ν΅μ¬ λΉμ¦λμ€ λ‘μ§μ μμ νμ§ μκ³ λ‘κΉ , μ€λ₯ μ²λ¦¬, μ±λ₯ λͺ¨λν°λ§κ³Ό κ°μ ν‘λ¨ κ΄μ¬μ¬λ₯Ό μ μ©ν©λλ€.
- νλ μμν¬/λΌμ΄λΈλ¬λ¦¬ κ°λ°: λ΄μ₯λ νμ₯μ΄ μλ μ¬μ¬μ© κ°λ₯ν μ»΄ν¬λνΈμ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λλλ€.
- μμ©κ΅¬ μ½λ κ°μ: λ°λ³΅μ μΈ μ½λλ₯Ό μ€μ¬ μ ν리μΌμ΄μ μ λ κΉ¨λνκ³ μ μ§λ³΄μνκΈ° μ½κ² λ§λλλ€.
μ΄λ€μ μ μΈκ³μ μΌλ‘ λ§μ μννΈμ¨μ΄ κ°λ° νκ²½μμ μ μ© κ°λ₯ν©λλ€.
λ°μ½λ μ΄ν° μ¬μ©μ μ΄μ
- μ½λ κ°λ μ±: λ°μ½λ μ΄ν°λ κΈ°λ₯μ λͺ ννκ³ κ°κ²°νκ² νννλ λ°©λ²μ μ 곡νμ¬ μ½λ κ°λ μ±μ ν₯μμν΅λλ€.
- μ μ§λ³΄μμ±: κ΄μ¬μ¬μ λν λ³κ²½μ΄ λΆλ¦¬λμ΄ μ ν리μΌμ΄μ μ λ€λ₯Έ λΆλΆμ μμμν¬ μνμ μ€μ λλ€.
- μ¬μ¬μ©μ±: λ°μ½λ μ΄ν°λ λμΌν λμμ μ¬λ¬ ν΄λμ€λ λ©μλμ μ μ©ν μ μκ² νμ¬ μ½λ μ¬μ¬μ©μ μ΄μ§ν©λλ€.
- ν μ€νΈ μ©μ΄μ±: μ ν리μΌμ΄μ μ λ€λ₯Έ λΆλΆμ λΆλ¦¬νμ¬ ν μ€νΈνκΈ° μ½κ² λ§λλλ€.
- κ΄μ¬μ¬ λΆλ¦¬: ν΅μ¬ λ‘μ§μ ν‘λ¨ κ΄μ¬μ¬μ λΆλ¦¬νμ¬ μ ν리μΌμ΄μ μ λ μ½κ² μ΄ν΄ν μ μλλ‘ ν©λλ€.
μ΄λ¬ν μ΄μ μ νλ‘μ νΈμ κ·λͺ¨λ νμ μμΉμ κ΄κ³μμ΄ λ³΄νΈμ μΌλ‘ μ μ΅ν©λλ€.
λ°μ½λ μ΄ν° μ¬μ© λͺ¨λ² μ¬λ‘
- λ°μ½λ μ΄ν°λ λ¨μνκ² μ μ§: λ¨μΌμ μ μ μλ μμ μ μννλ λ°μ½λ μ΄ν°λ₯Ό λͺ©νλ‘ ν©λλ€.
- λ°μ½λ μ΄ν° ν©ν 리 νλͺ νκ² μ¬μ©: λ ν° μ μ°μ±κ³Ό μ μ΄λ₯Ό μν΄ λ°μ½λ μ΄ν° ν©ν 리λ₯Ό μ¬μ©ν©λλ€.
- λ°μ½λ μ΄ν° λ¬Έμν: κ° λ°μ½λ μ΄ν°μ λͺ©μ κ³Ό μ¬μ©λ²μ λ¬Έμνν©λλ€. μ μ ν λ¬Έμλ λ€λ₯Έ κ°λ°μ, νΉν κΈλ‘λ² ν λ΄μμ μ½λλ₯Ό μ΄ν΄νλ λ° λμμ΄ λ©λλ€.
- λ°μ½λ μ΄ν° ν μ€νΈ: λ°μ½λ μ΄ν°κ° μμλλ‘ μλνλμ§ νμΈνκΈ° μν΄ ν μ€νΈλ₯Ό μμ±ν©λλ€. μ΄λ κΈλ‘λ² ν νλ‘μ νΈμμ μ¬μ©λ κ²½μ° νΉν μ€μν©λλ€.
- μ±λ₯μ λ―ΈμΉλ μν₯ κ³ λ €: νΉν μ ν리μΌμ΄μ μ μ±λ₯μ΄ μ€μν μμμμ λ°μ½λ μ΄ν°μ μ±λ₯ μν₯μ μΌλμ λ‘λλ€.
- μ΅μ μ 보 μ μ§: λ°μ½λ μ΄ν°μ λν ECMAScript μ μμ μ΅μ κ°λ° μ¬νκ³Ό μ§ννλ νμ€μ λν΄ κ³μ μ 보λ₯Ό μ»μ΅λλ€.
κ³Όμ μ νκ³
- ꡬ문 μ§ν: λ°μ½λ μ΄ν° ꡬ문μ λΉκ΅μ μμ μ μ΄μ§λ§ μ¬μ ν λ³κ²½λ μ μμΌλ©°, μ νν κΈ°λ₯κ³Ό APIλ μ½κ° λ€λ₯Ό μ μμ΅λλ€.
- νμ΅ κ³‘μ : λ°μ½λ μ΄ν°μ λ©ννλ‘κ·Έλλ°μ κΈ°λ³Έ κ°λ μ μ΄ν΄νλ λ° μκ°μ΄ 걸릴 μ μμ΅λλ€.
- λλ²κΉ : λ°μ½λ μ΄ν°λ₯Ό νμ©νλ μ½λλ₯Ό λλ²κΉ νλ κ²μ κ·Έλ€μ΄ λμ νλ μΆμν λλ¬Έμ λ μ΄λ €μΈ μ μμ΅λλ€.
- νΈνμ±: λμ νκ²½μ΄ λ°μ½λ μ΄ν°λ₯Ό μ§μνλμ§ νμΈνκ±°λ νΈλμ€νμΌλ¬λ₯Ό μ¬μ©ν©λλ€.
- κ³Όμ©: λ°μ½λ μ΄ν°λ₯Ό κ³Όλνκ² μ¬μ©νμ§ λ§μμμ€. κ°λ μ±μ μ μ§νκΈ° μν΄ μ¬λ°λ₯Έ μΆμν μμ€μ μ ννλ κ²μ΄ μ€μν©λλ€.
μ΄λ¬ν μ λ€μ ν κ΅μ‘κ³Ό νλ‘μ νΈ κ³νμ ν΅ν΄ μνλ μ μμ΅λλ€.
κ²°λ‘
μλ°μ€ν¬λ¦½νΈ λ°μ½λ μ΄ν°λ μ½λλ₯Ό νμ₯νκ³ μμ νμ¬ μ‘°μ§, μ μ§λ³΄μμ± λ° κ°λ μ±μ ν₯μμν€λ κ°λ ₯νκ³ μ°μν λ°©λ²μ μ 곡ν©λλ€. λ©νλ°μ΄ν° νλ‘κ·Έλλ°μ μ리λ₯Ό μ΄ν΄νκ³ λ°μ½λ μ΄ν°λ₯Ό ν¨κ³Όμ μΌλ‘ νμ©ν¨μΌλ‘μ¨ κ°λ°μλ λ κ²¬κ³ νκ³ μ μ°ν μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€. ECMAScript νμ€μ΄ λ°μ ν¨μ λ°λΌ λ°μ½λ μ΄ν° ꡬνμ λν μ 보λ₯Ό μ μ§νλ κ²μ λͺ¨λ μλ°μ€ν¬λ¦½νΈ κ°λ°μμκ² μ€μν©λλ€. μ ν¨μ± κ²μ¬ λ° λ‘κΉ μμ μμ± μΆκ°μ μ΄λ₯΄κΈ°κΉμ§ μ 곡λ μμ λ λ°μ½λ μ΄ν°μ λ€μ¬λ€λ₯ν¨μ κ°μ‘°ν©λλ€. λͺ νν μμ μ κΈλ‘λ² κ΄μ μ μ¬μ©μ λ Όμλ κ°λ μ κ΄λ²μν μ μ© κ°λ₯μ±μ 보μ¬μ€λλ€.
μ΄ λΈλ‘κ·Έ κ²μλ¬Όμ μ€λͺ λ ν΅μ°°λ ₯κ³Ό λͺ¨λ² μ¬λ‘λ₯Ό ν΅ν΄ νλ‘μ νΈμμ λ°μ½λ μ΄ν°μ νμ νμ©ν μ μμ΅λλ€. μ¬κΈ°μλ μμ©κ΅¬ μ½λ κ°μ, κ°μ λ μ½λ ꡬμ±, κ·Έλ¦¬κ³ μλ°μ€ν¬λ¦½νΈκ° μ 곡νλ λ©ννλ‘κ·Έλλ° κΈ°λ₯μ λν λ κΉμ μ΄ν΄μ μ΄μ μ΄ ν¬ν¨λ©λλ€. μ΄ μ κ·Ό λ°©μμ κ΅μ νμκ² νΉν κ΄λ ¨μ΄ μμ΅λλ€.
μ΄λ¬ν κ΄νμ μ±νν¨μΌλ‘μ¨ κ°λ°μλ λ λμ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μμ±νμ¬ νμ κ³Ό μμ°μ± ν₯μμ κ°λ₯νκ² ν μ μμ΅λλ€. μ΄ μ κ·Ό λ°©μμ μμΉμ κ΄κ³μμ΄ λ ν° ν¨μ¨μ±μ μ΄μ§ν©λλ€.
μ΄ λΈλ‘κ·Έμ μ 보λ λͺ¨λ νκ²½μμ μ½λλ₯Ό κ°μ νλ λ° νμ©λ μ μμΌλ©°, μ΄λ μ μ λ μνΈ μ°κ²°λλ κΈλ‘λ² μννΈμ¨μ΄ κ°λ° μΈκ³μμ λ§€μ° μ€μν©λλ€.